MKNOD(2) | п═я┐п╨п╬п╡п╬п╢я│я┌п╡п╬ п©я─п╬пЁя─п╟п╪п╪п╦я│я┌п╟ Linux | MKNOD(2) |
п≤п°п╞¶
mknod - я│п╬п╥п╢п╟п╣я┌ я│п©п╣я├п╦п╟п╩я▄п╫я▀п╧ п╦п╩п╦ п╬п╠я▀я┤п╫я▀п╧ я└п╟п╧п╩
п·п▒п≈п·п═¶
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int mknod(const char *pathname, mode_t mode, dev_t dev);
п╒я─п╣п╠п╬п╡п╟п╫п╦я▐
п╪п╟п╨я─п╬я│п╟
я┌п╣я│я┌п╦я─п╬п╡п╟п╫п╦я▐
я│п╡п╬п╧я│я┌п╡
п╢п╩я▐ glibc
(я│п╪. feature_test_macros(7)):
mknod(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
п·п÷п≤п║п░п²п≤п∙¶
п║п╦я│я┌п╣п╪п╫я▀п╧ п╡я▀п╥п╬п╡ mknod() я│п╬п╥п╢п╟я▒я┌ п╥п╟п©п╦я│я▄ (node) п╡ я└п╟п╧п╩п╬п╡п╬п╧ я│п╦я│я┌п╣п╪п╣ (п╬п╠я▀я┤п╫я▀п╧ я└п╟п╧п╩, я└п╟п╧п╩ я┐я│я┌я─п╬п╧я│я┌п╡п╟ п╦п╩п╦ п╦п╪п╣п╫п╬п╡п╟п╫п╫я▀п╧ п╨п╟п╫п╟п╩) я│ п╦п╪п╣п╫п╣п╪ pathname п╦ п╟я┌я─п╦п╠я┐я┌п╟п╪п╦, п╥п╟п╢п╟п╫п╫я▀п╪п╦ п╡ mode п╦ dev.
п░я─пЁя┐п╪п╣п╫я┌ mode п╥п╟п╢п╟п╣я┌ п╨п╟п╨ п©я─п╟п╡п╟ п╢п╬я│я┌я┐п©п╟, я┌п╟п╨ п╦ я┌п╦п© я│п╬п╥п╢п╟п╡п╟п╣п╪п╬п╧ п╥п╟п©п╦я│п╦. п▓ я█я┌п╬п╪ п©п╟я─п╟п╪п╣я┌я─п╣ я│п╬п╢п╣я─п╤п╦я┌я│я▐ п╠п╦я┌п╬п╡п╟я▐ п╨п╬п╪п╠п╦п╫п╟я├п╦я▐ (п╦я│п©п╬п╩я▄п╥я┐я▐ п©п╬п╠п╦я┌п╬п╡п╬п╣ п╩п╬пЁп╦я┤п╣я│п╨п╬п╣ я│п╩п╬п╤п╣п╫п╦п╣ OR) п╬п╢п╫п╬пЁп╬ п╦п╥ п╫п╦п╤п╣п©п╣я─п╣я┤п╦я│п╩п╣п╫п╫я▀я┘ я┌п╦п©п╬п╡ я└п╟п╧п╩п╬п╡ п╦ п©я─п╟п╡ п╢п╬я│я┌я┐п©п╟ п╢п╩я▐ п╫п╬п╡п╬п╧ п╥п╟п©п╦я│п╦.
п÷я─п╦ п╦п╥п╪п╣п╫п╣п╫п╦п╦ п©я─п╟п╡ п╢п╬я│я┌я┐п©п╟ я┐я┤п╦я┌я▀п╡п╟п╣я┌я│я▐ п╥п╫п╟я┤п╣п╫п╦п╣ umask п©я─п╬я├п╣я│я│п╟: п©я─п╟п╡п╟ п╢п╬я│я┌я┐п©п╟ я│п╬п╥п╢п╟п╡п╟п╣п╪п╬п╧ п╥п╟п©п╦я│п╦ я│я┌п╟п╫п╬п╡я▐я┌я│я▐ я─п╟п╡п╫я▀ (mode & ~umask).
п≈п╫п╟я┤п╣п╫п╦п╣ я┌п╦п©п╟ я└п╟п╧п╩ п╢п╬п╩п╤п╫п╬ п╠я▀я┌я▄ п╬п╢п╫п╦п╪ п╦п╥: S_IFREG (п╬п╠я▀я┤п╫я▀п╧ я└п╟п╧п╩, я│п╬п╥п╢п╟я▒я┌я│я▐ п©я┐я│я┌я▀п╪), S_IFCHR (я│п©п╣я├п╦п╟п╩я▄п╫я▀п╧ я│п╦п╪п╡п╬п╩я▄п╫я▀п╧ я└п╟п╧п╩, S_IFBLK (я│п©п╣я├п╦п╟п╩я▄п╫я▀п╧ п╠п╩п╬я┤п╫я▀п╧ я└п╟п╧п╩, S_IFIFO (п╦п╪п╣п╫п╬п╡п╟п╫п╫я▀п╧ п╨п╟п╫п╟п╩) п╦п╩п╦ S_IFSOCK (п╢п╬п╪п╣п╫п╫я▀п╧ я│п╬п╨п╣я┌ Unix ). п╒п╦п© я└п╟п╧п╩п╟ я│п╬ п╥п╫п╟я┤п╣п╫п╦п╣п╪ 0 я│п╬п╬я┌п╡п╣я┌я│я┌п╡я┐п╣я┌ я┌п╦п©я┐ S_IFREG.
п∙я│п╩п╦ я┌п╦п© я└п╟п╧п╩п╟ я─п╟п╡п╣п╫ S_IFCHR п╦п╩п╦ S_IFBLK, я┌п╬ п╡ dev п╥п╟п╢п╟я▒я┌я│я▐ п╬я│п╫п╬п╡п╫п╬п╧ п╦ п╡я│п©п╬п╪п╬пЁп╟я┌п╣п╩я▄п╫я▀п╧ п╫п╬п╪п╣я─п╟ я│п╬п╥п╢п╟п╡п╟п╣п╪п╬пЁп╬ я│п©п╣я├п╦п╟п╩я▄п╫п╬пЁп╬ я└п╟п╧п╩п╟ я┐я│я┌я─п╬п╧я│я┌п╡п╟ (makedev(3) п╪п╬п╤п╣я┌ п╬п╨п╟п╥п╟я┌я▄я│я▐ п©п╬п╩п╣п╥п╫п╬п╧ п©я─п╦ я│п╬п╥п╢п╟п╫п╦п╦ п╥п╫п╟я┤п╣п╫п╦я▐ п╢п╩я▐ dev); п╡ п╬я│я┌п╟п╩я▄п╫я▀я┘ я│п╩я┐я┤п╟я▐я┘ п╟я─пЁя┐п╪п╣п╫я┌ п╦пЁп╫п╬я─п╦я─я┐п╣я┌я│я▐.
п∙я│п╩п╦ pathname я┐п╤п╣ я│я┐я┴п╣я│я┌п╡я┐п╣я┌, п╦п╩п╦ я▐п╡п╩я▐п╣я┌я│я▐ я│п╦п╪п╡п╬п╩я▄п╫п╬п╧ я│я│я▀п╩п╨п╬п╧, я┌п╬ п╡я▀п╥п╬п╡ п╥п╟п╡п╣я─я┬п╟п╣я┌я│я▐ я│ п╬я┬п╦п╠п╨п╬п╧ EEXIST.
п║п╬п╥п╢п╟п╫п╫я▀п╧ я└п╟п╧п╩ п╠я┐п╢п╣я┌ п©я─п╦п╫п╟п╢п╩п╣п╤п╟я┌я▄ ID я█я└я└п╣п╨я┌п╦п╡п╫п╬пЁп╬ п╡п╩п╟п╢п╣п╩я▄я├п╟ п©я─п╬я├п╣я│я│п╟. п∙я│п╩п╦ п╡ п©я─п╟п╡п╟я┘ п╢п╬я│я┌я┐п©п╟ п╨ п╨п╟я┌п╟п╩п╬пЁя┐, п╡ п╨п╬я┌п╬я─п╬п╪ п╫п╟я┘п╬п╢п╦я┌я│я▐ я└п╟п╧п╩, я┐я│я┌п╟п╫п╬п╡п╩п╣п╫ п╠п╦я┌ set-group-ID, п╦п╩п╦ п╣я│п╩п╦ я└п╟п╧п╩п╬п╡п╟я▐ я│п╦я│я┌п╣п╪п╟ я│п╪п╬п╫я┌п╦я─п╬п╡п╟п╫п╟ я│ я│п╣п╪п╟п╫я┌п╦п╨п╬п╧ пЁя─я┐п©п© BSD, я┌п╬ п╫п╬п╡я▀п╧ я└п╟п╧п╩ я┐п╫п╟я│п╩п╣п╢я┐п╣я┌ пЁя─я┐п©п©я┐-п╡п╩п╟п╢п╣п╩я▄я├п╟ п╬я┌ я│п╡п╬п╣пЁп╬ я─п╬п╢п╦я┌п╣п╩я▄я│п╨п╬пЁп╬ п╨п╟я┌п╟п╩п╬пЁп╟; п╡ п©я─п╬я┌п╦п╡п╫п╬п╪ я│п╩я┐я┤п╟п╣ пЁя─я┐п©п©п╬п╧-п╡п╩п╟п╢п╣п╩я▄я├п╣п╪ я│я┌п╟п╫п╣я┌ ID я█я└я└п╣п╨я┌п╦п╡п╫п╬п╧ пЁя─я┐п©п©я▀ п©я─п╬я├п╣я│я│п╟.
п▓п·п≈п▓п═п░п╘п░п∙п°п·п∙ п≈п²п░п╖п∙п²п≤п∙¶
п÷я─п╦ я┐я│п©п╣я┬п╫п╬п╪ п╡я▀п©п╬п╩п╫п╣п╫п╦п╦ я└я┐п╫п╨я├п╦п╦ mknod() п╡п╬п╥п╡я─п╟я┴п╟п╣я┌я│я▐ 0. п▓ я│п╩я┐я┤п╟п╣ п╬я┬п╦п╠п╨п╦ п╡п╬п╥п╡я─п╟я┴п╟п╣я┌я│я▐ -1, п╟ errno я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌я│я▐ п╡ я│п╬п╬я┌п╡п╣я┌я│я┌п╡я┐я▌я┴п╣п╣ п╥п╫п╟я┤п╣п╫п╦п╣.
п·п╗п≤п▒п п≤¶
- EACCES
- пё п©я─п╬я├п╣я│я│п╟ п╫п╣я┌ п©я─п╟п╡ п╫п╟ п╥п╟п©п╦я│я▄ п╡ я─п╬п╢п╦я┌п╣п╩я▄я│п╨п╦п╧ п╨п╟я┌п╟п╩п╬пЁ, п╦п╩п╦ п╡ п╬п╢п╫п╬п╪ п╦п╥ п╨п╟я┌п╟п╩п╬пЁп╬п╡ п╡ pathname п╫п╣ я─п╟п╥я─п╣я┬я▒п╫ п©п╬п╦я│п╨ (я│п╪. я┌п╟п╨п╤п╣ path_resolution(7)).
- EEXIST
- pathname я┐п╤п╣ я│я┐я┴п╣я│я┌п╡я┐п╣я┌. п▓ я█я┌п╬п╪ я│п╩я┐я┤п╟п╣ pathname п╪п╬п╤п╣я┌ п╠я▀я┌я▄ я│п╦п╪п╡п╬п╩я▄п╫п╬п╧ я│я│я▀п╩п╨п╬п╧, п©п╬п╡п╦я│я┬п╣п╧ п╦п╩п╦ п╫п╣я┌.
- EFAULT
- п░я─пЁя┐п╪п╣п╫я┌ pathname я┐п╨п╟п╥я▀п╡п╟п╣я┌ п╥п╟ п©я─п╣п╢п╣п╩я▀ п╢п╬я│я┌я┐п©п╫п╬пЁп╬ п╟п╢я─п╣я│п╫п╬пЁп╬ п©я─п╬я│я┌я─п╟п╫я│я┌п╡п╟.
- EINVAL
- п▓ п╟я─пЁя┐п╪п╣п╫я┌п╣ mode я┐п╨п╟п╥п╟п╫п╬ п╥п╫п╟я┤п╣п╫п╦п╣, п╬я┌п╩п╦я┤п╫п╬п╣ п╬я┌ п╥п╫п╟я┤п╣п╫п╦я▐ п╢п╩я▐ п╬п╠я▀я┤п╫п╬пЁп╬ я└п╟п╧п╩п╟, я│п©п╣я├п╦п╟п╩я▄п╫п╬пЁп╬ я└п╟п╧п╩п╟ я┐я│я┌я─п╬п╧я│я┌п╡п╟, FIFO п╦п╩п╦ я│п╬п╨п╣я┌п╟.
- ELOOP
- п▓п╬ п╡я─п╣п╪я▐ п╬п©я─п╣п╢п╣п╩п╣п╫п╦я▐ pathname п╡я│я┌я─п╣я┌п╦п╩п╬я│я▄ я│п╩п╦я┬п╨п╬п╪ п╪п╫п╬пЁп╬ я│п╦п╪п╡п╬п╩я▄п╫я▀я┘ я│я│я▀п╩п╬п╨.
- ENAMETOOLONG
- pathname я│п╩п╦я┬п╨п╬п╪ п╢п╩п╦п╫п╣п╫.
- ENOENT
- п·п╢п╦п╫ п╦п╥ п╨п╟я┌п╟п╩п╬пЁп╬п╡ п╡ pathname п╫п╣ я│я┐я┴п╣я│я┌п╡я┐п╣я┌ п╦п╩п╦ я▐п╡п╩я▐п╣я┌я│я▐ п©п╬п╡п╦я│я┬п╣п╧ я│п╦п╪п╡п╬п╩п╦я┤п╣я│п╨п╬п╧ я│я│я▀п╩п╨п╬п╧.
- ENOMEM
- п²п╣п╢п╬я│я┌п╟я┌п╬я┤п╫п╬п╣ п╨п╬п╩п╦я┤п╣я│я┌п╡п╬ п©п╟п╪я▐я┌п╦ я▐п╢я─п╟.
- ENOSPC
- п²п╟ я┐я│я┌я─п╬п╧я│я┌п╡п╣, я│п╬п╢п╣я─п╤п╟я┴п╣п╪ pathname, п╫п╣я┌ п╪п╣я│я┌п╟ п╢п╩я▐ я│п╬п╥п╢п╟п╫п╦я▐ п╫п╬п╡п╬пЁп╬ я█п╩п╣п╪п╣п╫я┌п╟.
- ENOTDIR
- п п╬п╪п©п╬п╫п╣п╫я┌ п©я┐я┌п╦, п╦я│п©п╬п╩я▄п╥п╬п╡п╟п╫п╫я▀п╧ п╨п╟п╨ п╨п╟я┌п╟п╩п╬пЁ п╡ pathname, п╡ п╢п╣п╧я│я┌п╡п╦я┌п╣п╩я▄п╫п╬я│я┌п╦ я┌п╟п╨п╬п╡я▀п╪ п╫п╣ я▐п╡п╩я▐п╣я┌я│я▐.
- EPERM
- п▓ п╟я─пЁя┐п╪п╣п╫я┌п╣ mode п╥п╟п©я─п╬я┬п╣п╫п╬ я│п╬п╥п╢п╟п╫п╦п╣ я┤п╣пЁп╬-я┌п╬, п╬я┌п╩п╦я┤п╫п╬пЁп╬ п╬я┌ п╬п╠я▀я┤п╫п╬пЁп╬ я└п╟п╧п╩п╟, я│п©п╣я├п╦п╟п╩я▄п╫п╬пЁп╬ я└п╟п╧п╩п╟ я┐я│я┌я─п╬п╧я│я┌п╡п╟, FIFO (п╦п╪п╣п╫п╬п╡п╟п╫п╫п╬пЁп╬ п╨п╟п╫п╟п╩п╟) п╦п╩п╦ п╢п╬п╪п╣п╫п╫п╬пЁп╬ я│п╬п╨п╣я┌п╟ Unix п╦ я┐ п╡я▀п╥п╡п╟п╡я┬п╣пЁп╬ п©я─п╬я├п╣я│я│п╟ п╫п╣я┌ п©я─п╟п╡ (Linux: п╫п╣ п╦п╪п╣п╣я┌ п╪п╟п╫п╢п╟я┌п╟ CAP_MKNOD); я┌п╟п╨п╤п╣ п╥п╟п╡п╣я─я┬п╟п╣я┌я│я▐, п╣я│п╩п╦ я└п╟п╧п╩п╬п╡п╟я▐ я│п╦я│я┌п╣п╪п╟, я│п╬п╢п╣я─п╤п╟я┴п╟я▐ pathname, п╫п╣ п©п╬п╢п╢п╣я─п╤п╦п╡п╟п╣я┌ я┌п╦п© п╥п╟п©я─п╟я┬п╦п╡п╟п╣п╪п╬пЁп╬ я█п╩п╣п╪п╣п╫я┌п╟.
- EROFS
- pathname п╫п╟я┘п╬п╢п╦я┌я│я▐ п╫п╟ я└п╟п╧п╩п╬п╡п╬п╧ я│п╦я│я┌п╣п╪п╣, п╢п╬я│я┌я┐п©п╫п╬п╧ я┌п╬п╩я▄п╨п╬ п╢п╩я▐ я┤я┌п╣п╫п╦я▐.
п║п·п·п╒п▓п∙п╒п║п╒п▓п≤п∙ п║п╒п░п²п■п░п═п╒п░п°¶
SVr4, 4.4BSD, POSIX.1-2001 (я│п╪п╬я┌я─п╦я┌п╣ п╢п╟п╩п╣п╣).
п≈п░п°п∙п╖п░п²п≤п╞¶
п▓ POSIX.1-2001 я│п╨п╟п╥п╟п╫п╬: "п∙п╢п╦п╫я│я┌п╡п╣п╫п╫я▀п╧ я│п©п╬я│п╬п╠, п╨п╬я┌п╬я─я▀п╪ п╪п╬п╤п╫п╬ п╦я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄ mknod() п╡ п©п╣я─п╣п╫п╬я│п╦п╪я▀я┘ п©я─п╬пЁя─п╟п╪п╪п╟я┘ я█я┌п╬ я│п╬п╥п╢п╟п╫п╦п╣ я│п©п╣я├п╦п╟п╩я▄п╫п╬пЁп╬ я└п╟п╧п╩п╟ FIFO. п∙я│п╩п╦ п╥п╫п╟я┤п╣п╫п╦п╣ mode п╫п╣ я─п╟п╡п╫п╬ S_IFIFO п╦п╩п╦ dev п╫п╣ я─п╟п╡п╫п╬ 0, я┌п╬ п©п╬п╡п╣п╢п╣п╫п╦п╣ mknod() п╫п╣ п╬п©я─п╣п╢п╣п╩п╣п╫п╬." п·п╢п╫п╟п╨п╬, п╡ п╫п╟я│я┌п╬я▐я┴п╣п╣ п╡я─п╣п╪я▐ п╫п╦п╨п╬пЁп╢п╟ п╫п╣ п╦я│п©п╬п╩я▄п╥я┐п╧я┌п╣ mknod() п╢п╩я▐ я█я┌п╬п╧ я├п╣п╩п╦; п╡п╪п╣я│я┌п╬ я█я┌п╬пЁп╬ п╦я│п©п╬п╩я▄п╥я┐п╧я┌п╣ я└я┐п╫п╨я├п╦я▌ mkfifo(3), п╨п╬я┌п╬я─п╟я▐ я│п╬п╥п╢п╟п╫п╟ я│п©п╣я├п╦п╟п╩я▄п╫п╬ п╢п╩я▐ я█я┌п╬пЁп╬.
п▓ Linux я█я┌п╬я┌ п╡я▀п╥п╬п╡ п╫п╣ п╪п╬п╤п╣я┌ п╦я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄я│я▐ п╢п╩я▐ я│п╬п╥п╢п╟п╫п╦я▐ п╨п╟я┌п╟п╩п╬пЁп╬п╡. п■п╩я▐ я│п╬п╥п╢п╟п╫п╦я▐ п╨п╟я┌п╟п╩п╬пЁп╬п╡ п╣я│я┌я▄ я│п╦я│я┌п╣п╪п╫я▀п╧ п╡я▀п╥п╬п╡ mkdir(2).
п▓ п©я─п╬я┌п╬п╨п╬п╩п╣, п©п╬ п╨п╬я┌п╬я─п╬п╪я┐ я─п╟п╠п╬я┌п╟п╣я┌ NFS, я│п╬п╢п╣я─п╤п╦я┌я│я▐ п╪п╫п╬п╤п╣я│я┌п╡п╬ п╫п╣п╢п╬я─п╟п╠п╬я┌п╬п╨. п²п╣п╨п╬я┌п╬я─я▀п╣ п╦п╥ п╫п╦я┘ п╡п╩п╦я▐я▌я┌ п╫п╟ mknod().
п║п°п·п╒п═п≤п╒п∙ п╒п░п п√п∙¶
chmod(2), chown(2), fcntl(2), mkdir(2), mknodat(2), mount(2), socket(2), stat(2), umask(2), unlink(2), makedev(3), mkfifo(3), path_resolution(7)
2008-12-01 | Linux |